/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.fina.dto;

import com.brain.come.dto.DocumentoVentaDto;
import com.brain.conf.dto.MonedaDto;
import com.brain.core.dto.ComunDto;
import com.brain.core.dto.ParametroDto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

/**
 *
 * @author Guille
 */
@Entity
@Table(name = "TFINA_FINANCIAMIENTO_LETRA")
public class FinanciamientoLetraDto extends ComunDto implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_TFINA_FINANCIAMIENTO_LETRA")
    @TableGenerator(name = "SEQ_TFINA_FINANCIAMIENTO_LETRA", table = "TCORE_ENTIDAD", pkColumnName = "NOMBRE", valueColumnName = "CORRELATIVO", pkColumnValue = "TFINA_FINANCIAMIENTO_LETRA", allocationSize = 1)
    private Long id;
    @Column(name = "ESTADO")
    private String estado;
    @Transient
    private String estadoTexto;
    @ManyToOne
    @JoinColumn(name = "DOCUMENTO_VENTA", referencedColumnName = "ID")
    private DocumentoVentaDto documentoVentaDto;
    @Column(name = "LUGAR_GIRO")
    private String lugarGiro;
    @Column(name = "FECHA_GIRO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaGiro;
    @JoinColumn(name = "MONEDA", referencedColumnName = "ID")
    @ManyToOne
    private MonedaDto monedaDto;
    @Column(name = "MOTIVO")
    private String motivo;
    @Column(name = "BANCO")
    private String banco;
    @Column(name = "OFICINA")
    private String oficina;
    @Column(name = "NUMERO_CUENTA")
    private String numeroCuenta;
    @Column(name = "DC")
    private String dc;
    @Column(name = "FIADOR")
    private String fiador;
    @Column(name = "AVAL_FIADOR")
    private String avalFiador;
    @Column(name = "DOMICILIO_FIADOR")
    private String domicilioFiador;
    @Column(name = "REPRESENTANTE_FIADOR")
    private String representanteFiador;
    @Column(name = "TELEFONO_FIADOR")
    private String telefonoFiador;
    @Column(name = "DOI_FIADOR")
    private String doiFiador;
    @Column(name = "GIRADO")
    private String girado;
    @Column(name = "DOMICILIO_GIRADO")
    private String domicilioGirado;
    @Column(name = "DOI_GIRADO")
    private Long doiGirado;
    @Column(name = "TELEFONO_GIRADO")
    private String telefonoGirado;
    @Column(name = "PRECIO_BIEN")
    private BigDecimal precioBien;
    @Column(name = "INICIAL")
    private BigDecimal inicial;
    @Column(name = "SALDO_FINANCIAR")
    private BigDecimal saldoFinanciar;
    @Column(name = "PERIODO_GRACIA")
    private Long periodoGracia;
    @Column(name = "NUEVO_SALDO_FINANCIAR")
    private BigDecimal nuevoSaldoFinanciar;
    @Column(name = "INTERVALO_DIAS_CUOTA")
    private Long intervaloDiasCuota;
    @Column(name = "TEA")
    private BigDecimal tea;
    @Column(name = "TEM")
    private BigDecimal tem;
    @Column(name = "TE_ESPECIAL")
    private BigDecimal teEspecial;
    @Column(name = "NUMERO_PERIODOS_LETRA")
    private Long numeroPeriodosLetra;
    @Column(name = "CUOTA_IGUAL")
    private BigDecimal cuotaIgual;
    @Column(name = "TOTAL_INTERES")
    private BigDecimal totalInteres;
    @Column(name = "IMPUESTO_VENTA")
    private BigDecimal impuestoVenta;
    @Column(name = "MONTO_IMPUESTO_VENTA")
    private BigDecimal montoImpuestoVenta;
    @Column(name = "ES_AGENTE_RETENCION")
    private Boolean esAgenteRetencion;
    @Column(name = "PORCENTAJE_RETENCION")
    private BigDecimal porcentajeRetencion;
    @Column(name = "MONTO_RETENCION")
    private BigDecimal montoRetencion;
    @Column(name = "SALDO_RETENCION")
    private BigDecimal saldoRetencion;
    @Column(name = "PRINT_CUOTAS_IGUALES")
    private Boolean printCuotasIguales;   
    @OneToMany(mappedBy = "financiamientoLetraDto", cascade = {CascadeType.ALL})
    @LazyCollection(LazyCollectionOption.FALSE)
    private List<LetraDto> listaLetras;

    public FinanciamientoLetraDto() {
    }

    public FinanciamientoLetraDto(Long id) {
        this.id = id;
    }

    public String getAvalFiador() {
        return avalFiador;
    }

    public void setAvalFiador(String avalFiador) {
        this.avalFiador = avalFiador;
    }

    public String getBanco() {
        return banco;
    }

    public void setBanco(String banco) {
        this.banco = banco;
    }

    public BigDecimal getCuotaIgual() {
        return cuotaIgual;
    }

    public void setCuotaIgual(BigDecimal cuotaIgual) {
        this.cuotaIgual = cuotaIgual;
    }

    public String getDc() {
        return dc;
    }

    public void setDc(String dc) {
        this.dc = dc;
    }

    public DocumentoVentaDto getDocumentoVentaDto() {
        return documentoVentaDto;
    }

    public void setDocumentoVentaDto(DocumentoVentaDto documentoVentaDto) {
        this.documentoVentaDto = documentoVentaDto;
    }

    public String getDoiFiador() {
        return doiFiador;
    }

    public void setDoiFiador(String doiFiador) {
        this.doiFiador = doiFiador;
    }

    public Long getDoiGirado() {
        return doiGirado;
    }

    public void setDoiGirado(Long doiGirado) {
        this.doiGirado = doiGirado;
    }

    public String getDomicilioFiador() {
        return domicilioFiador;
    }

    public void setDomicilioFiador(String domicilioFiador) {
        this.domicilioFiador = domicilioFiador;
    }

    public String getDomicilioGirado() {
        return domicilioGirado;
    }

    public void setDomicilioGirado(String domicilioGirado) {
        this.domicilioGirado = domicilioGirado;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }        
    
    public Date getFechaGiro() {
        return fechaGiro;
    }

    public void setFechaGiro(Date fechaGiro) {
        this.fechaGiro = fechaGiro;
    }

    public String getFiador() {
        return fiador;
    }

    public void setFiador(String fiador) {
        this.fiador = fiador;
    }

    public String getGirado() {
        return girado;
    }

    public void setGirado(String girado) {
        this.girado = girado;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public BigDecimal getImpuestoVenta() {
        return impuestoVenta;
    }

    public void setImpuestoVenta(BigDecimal impuestoVenta) {
        this.impuestoVenta = impuestoVenta;
    }

    public BigDecimal getInicial() {
        return inicial;
    }

    public void setInicial(BigDecimal inicial) {
        this.inicial = inicial;
    }

    public Long getIntervaloDiasCuota() {
        return intervaloDiasCuota;
    }

    public void setIntervaloDiasCuota(Long intervaloDiasCuota) {
        this.intervaloDiasCuota = intervaloDiasCuota;
    }

    public List<LetraDto> getListaLetras() {
        return listaLetras;
    }

    public void setListaLetras(List<LetraDto> listaLetras) {
        this.listaLetras = listaLetras;
    }

    public String getLugarGiro() {
        return lugarGiro;
    }

    public void setLugarGiro(String lugarGiro) {
        this.lugarGiro = lugarGiro;
    }

    public MonedaDto getMonedaDto() {
        return monedaDto;
    }

    public void setMonedaDto(MonedaDto monedaDto) {
        this.monedaDto = monedaDto;
    }

    public BigDecimal getMontoImpuestoVenta() {
        return montoImpuestoVenta;
    }

    public void setMontoImpuestoVenta(BigDecimal montoImpuestoVenta) {
        this.montoImpuestoVenta = montoImpuestoVenta;
    }

    public String getMotivo() {
        return motivo;
    }

    public void setMotivo(String motivo) {
        this.motivo = motivo;
    }

    public BigDecimal getNuevoSaldoFinanciar() {
        return nuevoSaldoFinanciar;
    }

    public void setNuevoSaldoFinanciar(BigDecimal nuevoSaldoFinanciar) {
        this.nuevoSaldoFinanciar = nuevoSaldoFinanciar;
    }

    public String getNumeroCuenta() {
        return numeroCuenta;
    }

    public void setNumeroCuenta(String numeroCuenta) {
        this.numeroCuenta = numeroCuenta;
    }

    public Long getNumeroPeriodosLetra() {
        return numeroPeriodosLetra;
    }

    public void setNumeroPeriodosLetra(Long numeroPeriodosLetra) {
        this.numeroPeriodosLetra = numeroPeriodosLetra;
    }

    public String getOficina() {
        return oficina;
    }

    public void setOficina(String oficina) {
        this.oficina = oficina;
    }

    public Long getPeriodoGracia() {
        return periodoGracia;
    }

    public void setPeriodoGracia(Long periodoGracia) {
        this.periodoGracia = periodoGracia;
    }

    public BigDecimal getPrecioBien() {
        return precioBien;
    }

    public void setPrecioBien(BigDecimal precioBien) {
        this.precioBien = precioBien;
    }

    public Boolean getPrintCuotasIguales() {
        return printCuotasIguales;
    }

    public void setPrintCuotasIguales(Boolean printCuotasIguales) {
        this.printCuotasIguales = printCuotasIguales;
    }

    public String getRepresentanteFiador() {
        return representanteFiador;
    }

    public void setRepresentanteFiador(String representanteFiador) {
        this.representanteFiador = representanteFiador;
    }

    public BigDecimal getSaldoFinanciar() {
        return saldoFinanciar;
    }

    public void setSaldoFinanciar(BigDecimal saldoFinanciar) {
        this.saldoFinanciar = saldoFinanciar;
    }

    public BigDecimal getTeEspecial() {
        return teEspecial;
    }

    public void setTeEspecial(BigDecimal teEspecial) {
        this.teEspecial = teEspecial;
    }

    public BigDecimal getTea() {
        return tea;
    }

    public void setTea(BigDecimal tea) {
        this.tea = tea;
    }

    public String getTelefonoFiador() {
        return telefonoFiador;
    }

    public void setTelefonoFiador(String telefonoFiador) {
        this.telefonoFiador = telefonoFiador;
    }

    public String getTelefonoGirado() {
        return telefonoGirado;
    }

    public void setTelefonoGirado(String telefonoGirado) {
        this.telefonoGirado = telefonoGirado;
    }

    public BigDecimal getTem() {
        return tem;
    }

    public void setTem(BigDecimal tem) {
        this.tem = tem;
    }

    public BigDecimal getTotalInteres() {
        return totalInteres;
    }

    public void setTotalInteres(BigDecimal totalInteres) {
        this.totalInteres = totalInteres;
    }

    public Boolean getEsAgenteRetencion() {
        return esAgenteRetencion;
    }

    public void setEsAgenteRetencion(Boolean esAgenteRetencion) {
        this.esAgenteRetencion = esAgenteRetencion;
    }

    public BigDecimal getPorcentajeRetencion() {
        return porcentajeRetencion;
    }

    public void setPorcentajeRetencion(BigDecimal porcentajeRetencion) {
        this.porcentajeRetencion = porcentajeRetencion;
    }

    public BigDecimal getMontoRetencion() {
        return montoRetencion;
    }

    public void setMontoRetencion(BigDecimal montoRetencion) {
        this.montoRetencion = montoRetencion;
    }

    public BigDecimal getSaldoRetencion() {
        return saldoRetencion;
    }

    public void setSaldoRetencion(BigDecimal saldoRetencion) {
        this.saldoRetencion = saldoRetencion;
    }

    public String getEstadoTexto() {
        if (estado.equals("E")){
            estadoTexto = "ELABORACIÓN";
        }
        if (estado.equals("C")){
            estadoTexto = "CONFIRMADO";
        }
        if (estado.equals("A")){
            estadoTexto = "ANULADO";
        }
        return estadoTexto;
    }

    public void setEstadoTexto(String estadoTexto) {
        this.estadoTexto = estadoTexto;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof FinanciamientoLetraDto)) {
            return false;
        }
        FinanciamientoLetraDto other = (FinanciamientoLetraDto) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.brain.fina.dto.FinanciamientoLetraDto[ id=" + id + " ]";
    }
}
